package cn.bugstack.springframework.beans.factory.config;

import cn.bugstack.springframework.beans.BeansException;

/**
 * <p>用于修改新实例化 Bean 对象的扩展点
 * <p>reference: DerekYRC https://github.com/DerekYRC/mini-spring
 *
 * @author Yaxi.Zhang
 * @since 2022/12/17 09:05
 */
public interface BeanPostProcessor {

    /**
     * 在 Bean 对象执行初始化方法之前，执行此方法
     *
     * @param bean     bean
     * @param beanName bean名称
     * @return bean对象
     * @throws BeansException bean异常
     */
    Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;

    /**
     * 在 Bean 对象执行初始化方法之后，执行此方法
     *
     * @param bean     bean
     * @param beanName bean名称
     * @return bean对象
     * @throws BeansException bean异常
     */
    Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;

}
